Slepoy • сис.админ © 2025-2026.

SLEPOY • сис.админ

Как обновить или установить SSL-cертификат Let's Encrypt на сервер Zimbra

Пошаговая инструкция по установке бесплатого SSL-сертификата Let's Encrypt на почтовый сервер Zimbra и автоматизировать процес перевыпуска.

Ранее в статье https://slepoy.site/crib/kak-obnovit-ili-ustanovit-ssl-certifikat-lets-encrypt-na-server-zimbra был подробно описан ручной процесс развертывания коммерческого сертификата. С тех пор процедура для GlobalSign не претерпела изменений, и все основные команды остаются актуальными.

Однако для тех, кто хочет использовать бесплатные сертификаты Let's Encrypt, логика работы будет иной из-за необходимости их регулярного обновления (каждые 90 дней). В связи с этим хочу поделиться не просто скриптом, а обзором готовых решений, которые полностью автоматизируют цикл получения и обновления сертификатов Let's Encrypt для Zimbra.

Если же не брать в расчет API сертифицированных центров, то для GlobalSign и других коммерческих УЦ ручная загрузка файлов и копирование на сервер остаются единственным универсальным способом.

Вместо ручного копирования и проверки цепочки сертификатов (как в случае с GlobalSign), скрипт, сам останавливет службы, запрашивает новый сертификат через Certbot и развертывает его. Он учитывает необходимость скачивания корневого сертификата ISRG Root X1/X2 для корректной работы Zimbra. Сам скрипт:

Code
#!/bin/bash
#
DOMAIN="Ваш.домен"
#
certbot renew --force-renewal
cd /etc/letsencrypt/live/$DOMAIN/ || exit
wget -O /etc/letsencrypt/live/$DOMAIN/zimbra_chain.pem https://letsencrypt.org/certs/isrgrootx1.pem
cat /etc/letsencrypt/live/$DOMAIN/chain.pem >> /etc/letsencrypt/live/$DOMAIN/zimbra_chain.pem
#
tar -czf /opt/zimbra/ssl/zimbra-$(date +"%d.%m.%y_%H.%M").tar.gz /opt/zimbra/ssl/zimbra
#
mkdir /opt/zimbra/ssl/letsencrypt
cp /etc/letsencrypt/live/$DOMAIN/* /opt/zimbra/ssl/letsencrypt/
#
chown -Rfv zimbra:zimbra /opt/zimbra/ssl/letsencrypt/
#
sudo su - zimbra -c "zmcertmgr verifycrt comm /opt/zimbra/ssl/letsencrypt/privkey.pem /opt/zimbra/ssl/letsencrypt/cert.pem /opt/zimbra/ssl/letsencrypt/zimbra_chain.pem"
#
cp /opt/zimbra/ssl/letsencrypt/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key
chown zimbra:zimbra /opt/zimbra/ssl/zimbra/commercial/commercial.key
#
sudo su - zimbra -c "zmproxyctl stop"
sudo su - zimbra -c "zmmailboxdctl stop"
sudo su - zimbra -c "zmcertmgr deploycrt comm /opt/zimbra/ssl/letsencrypt/cert.pem /opt/zimbra/ssl/letsencrypt/zimbra_chain.pem"
sudo su - zimbra -c "zmcontrol restart"

В нашем случае Zimbra также находилась за nginx reverse proxy. Это накладывает свои особенности: запросы на верификацию домена (для .well-known/acme-challenge) должен принимать именно фронтальный nginx, так как именно он смотрит во внешний мир.

Вот готовая конфигурация для автовыпуска сертификатов через proxy-сервер, которая у нас работает:

Code
server {
    listen 80;
    server_name ваш.домен;

    location / {
        proxy_pass http://адресс.zimbra:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Остается только скопировать скрипт расположить его в директории на вашем сервере и добавить в cron задачу по расписанию запуск скрипта:

Code
# Открываем редактор cron
crontab -e

# Добавляем задачу
0 0 1 * * /bin/bash /root/renew_zimbra_ssl.sh

Расшифровка задания cron:

Расписание: 0 0 1 * * - означает:

  1. Минута: 0 (в 0 минут)
  2. Час: 0 (в полночь/00:00)
  3. День месяца: 1 (1-го числа каждого месяца)
  4. Месяц: * (каждый месяц)
  5. День недели: * (любой день недели)

Команда: /bin/bash /путь/до/скрипта.sh:

  1. Запускает оболочку bash
  2. Выполняет скрипт, находящийся по пути /root/renew_zimbra_ssl.sh

Предложенный метод позволяет полностью автоматизировать рутинную задачу обновления SSL-сертификата для Zimbra. Вместо ежеквартального ручного копирования файлов вы получаете систему, которая самостоятельно следит за сроками и обновляет сертификаты, не требуя вашего участия.

Статистика

Дата публикации: 13 часов назад

Дата редактирования: 13 часов назад

Количество просмотров: 143

Количество показов: 476

Количество лайков: 0

Закладки: 0

Теги

LinuxZimbraSSLBash